home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
pcr
/
readme
< prev
Wrap
Text File
|
1992-04-17
|
4KB
|
95 lines
#
# README
#
# Copyright (c) 1988,1990 Xerox Corporation. All rights reserved.
# Use and copying of this software and preparation of derivative works based
# upon this software are permitted. Any distribution of this software or
# derivative works must comply with all applicable United States export
# control laws. This software is made available AS IS, and Xerox Corporation
# makes no warranty about the software, its performance or its conformity to
# any specification. Any person obtaining a copy of this software is requested
# to send their name and post office or electronic mail address to:
# PCR Coordinator
# Xerox PARC
# 3333 Coyote Hill Rd.
# Palo Alto, CA 94304
#
#
# Demers, November 1, 1988 3:11:16 pm PST
# Weiser, December 1, 1989
# Boehm, April 8, 1992
#
Welcome to xr, the Xerox Portable Common Runtime (also known as PCR)!
PCR provides a runtime environment that supports multiple threads,
dynamic loading, and garbage collection for clients written either in C,
or in a higher level language, and compiled by a compiler that understands
PCRs primitives. It supports scheduling of threads by more than one
UNIX process (and hence by more than one physical processor on a Sun
multiprocessor, or similar system.) The garbage collector runs mainly
concurrently with client code.
APOLOGIA
The documentation for 4_4 has been substantially revised. (That for
3_4 was so obsolete as to be almost completely useless.) Nonetheless
a lot more documentation would be useful. The DIST/MAN directory
contains 4 manual pages. But most of the documentation is really in
the include files. These are all copied to DIST/INCLUDE/xr by the
makefile.
In spite of its name, this version has not been tested recently for
portability. Earlier versions once ran on 68020's and Mach and SunOS 3.5.
But, all we are sure of about this version is that it runs on Sun-4's under
SunOS 4.1.1 and 4.1.2.
Current versions of PCR are known to contain operating system dependencies
that make ports to even other UNIX versions nontrivial. The garbage
collector write protects pages and catches the resulting bus errors.
The dynamic loader has to know a lot about load file formats. The
multiple-UNIX-process architecture requires that open file descriptors
can be passed between processes. (4.3BSD and derivatives can do
that, though it's not well-known or well-documented.) The shared
memory implementation requires that memory segments can be placed
in the process address space where PCR wants them, and not where the
kernel wants them. Unfortunately, there seems to be no way to remove
most of these dependencies without either limiting thread scheduling
to a single UNIX process (and thus a single physical processor) or
degrading collector performance.
But we do advise using PCR. We use it. We welcome feedback if you try to
bring up PCR or port it, but we can't promise much in the way of replies.
Send commentary mail to PCRCoordinator@parc.xerox.com. Thanks.
GETTING STARTED
If you got this far you must have had 2MB free on your disk. Congratulations.
To actually build the system you'll need another 12MB free. Make sure you
have this before going much further. (The PCR executable itself is
about 665K + symbol table. Much of this does not need to be paged
in unless you use a large fraction of the 96MB maximum heap size.)
This is the top-level directory. Think of it as the home directory of a "user"
named "xr". (We literally do this at PARC). Almost all the files used
when PCR is actually operating remain here, with symbolic links and
environment variables pointing from individual programs and shell scripts
back to here.
When you first receive the distribution, there will be two subdirectories:
UTILITIES: a couple of useful commands.
DIST: the bulk of the PCR distribution.
After you have installed the system, the DIST subdirectory will be replaced by
subdirectories of the form
xx_yy.zz: PCR version xx_yy, local version zz.
INSTALLED: a symbolic link to the latest version.
DEVELOPMENT (optional): the place where changes are being made
Symbolic links will be created in the "usual" places (e.g. /usr/include) that point into the INSTALLED subtree.
For installation instructions, consult DIST/README.